Search Results

Search found 29191 results on 1168 pages for 'joel in go'.

Page 621/1168 | < Previous Page | 617 618 619 620 621 622 623 624 625 626 627 628  | Next Page >

  • The Iron Bird Approach

    - by David Paquette
    It turns out that designing software is not so different than designing commercial aircraft.  I just finished watching a video that talked about the approach that Bombardier is taking in designing the new C Series aircraft.  I was struck by the similarities to agile approaches to software design.  In the video, Bombardier describes how they are using an Iron Bird to work through a number of design questions in advance of ever having a version of the aircraft that can ever be flown.  The Iron Bird is a life size replica of the plane.  Based on the name, I would assume the plane is built in a very heavy material that could never fly.  Using this replica, Bombardier is able to valid certain assumptions such as the length of each wire in the electric system.  They are also able to confirm that some parts are working properly (like the rudders).  They even go as far as to have a complete replica of the cockpit.  This allows Bombardier to put pilots in the cockpit to run through simulated take-off and landing sequences. The basic tenant of the approach seems to be Validate your design early with working prototypes Get feedback from users early, well in advance of finishing the end product   In software development, we tend to think of ourselves as special.  I often tell people that it is difficult to draw comparisons to building items in the physical world (“Building software is nothing like building a sky scraper”).  After watching this video, I am wondering if designing/building software is actually a lot like designing/building commercial aircraft.   Watch the video here (http://www.theglobeandmail.com/report-on-business/video/video-selling-the-c-series/article4400616/)

    Read the article

  • Reading OpenDocument spreadsheets using C#

    - by DigiMortal
    Excel with its file formats is not the only spreadsheet application that is widely used. There are also users on Linux and Macs and often they are using OpenOffice and other open-source office packages that use ODF instead of OpenXML. In this post I will show you how to read Open Document spreadsheet in C#. Importer as example My previous post about importers showed you how to build flexible importers support to your web application. This post introduces you practical example of one of my importers. Of course, sensitive code is omitted. We start with ODS importer class and we add new methods as we go. public class OdsImporter : ImporterBase {     public OdsImporter()     {     }       public override string[] SupportedFileExtensions     {         get { return new[] { "ods" }; }     }       public override ImportResult Import(Stream fileStream, long companyId, short year)     {         string contentXml = GetContentXml(fileStream);           var result = new ImportResult();         var doc = XDocument.Parse(contentXml);           var rows = doc.Descendants("{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table-row").Skip(1);           foreach (var row in rows)         {             ImportRow(row, companyId, year, result);         }           return result;     } } The class given here just extends base class for importers (previous post uses interface but as I already told there you move to abstract base class when writing code for real projects). Import method reads data from *.ods file, parses it (it is XML), finds all data rows and imports data. As you may see then first row is skipped. This is because the first row on my sheet is always headers row. Reading ODS file Our import method starts with getting XML from *.ods file. ODS files like OpenXml files are zipped containers that contain different files. We need content.xml as all data is kept there. To get the contents of file we use SharpZipLib library to read uploaded file as *.zip file. private static string GetContentXml(Stream fileStream) {     var contentXml = "";       using (var zipInputStream = new ZipInputStream(fileStream))     {         ZipEntry contentEntry = null;         while ((contentEntry = zipInputStream.GetNextEntry()) != null)         {             if (!contentEntry.IsFile)                 continue;             if (contentEntry.Name.ToLower() == "content.xml")                 break;         }           if (contentEntry.Name.ToLower() != "content.xml")         {             throw new Exception("Cannot find content.xml");         }           var bytesResult = new byte[] { };         var bytes = new byte[2000];         var i = 0;           while ((i = zipInputStream.Read(bytes, 0, bytes.Length)) != 0)         {             var arrayLength = bytesResult.Length;             Array.Resize<byte>(ref bytesResult, arrayLength + i);             Array.Copy(bytes, 0, bytesResult, arrayLength, i);         }         contentXml = Encoding.UTF8.GetString(bytesResult);     }     return contentXml; } If here is content.xml file then we stop browsing the file. We read this file to memory and return it as UTF-8 format string. Importing rows Our last task is to import rows. We use special method for this as we have to handle some tricks here. To keep files smaller the cell count on row is not always the same. If we have more than one empty cell one after another then ODS keeps only one cell for sequential empty cells. This cell has attribute called number-columns-repeated and it’s value is set to the number of sequential empty cells. This is why we use two indexers for cells collection. private void ImportRow(XElement row, ImportResult result) {     var cells = (from c in row.Descendants()                 where c.Name == "{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table-cell"                 select c).ToList();       var dto = new DataDto();       var count = cells.Count;     var j = -1;       for (var i = 0; i < count; i++)     {         j++;         var cell = cells[i];         var attr = cell.Attribute("{urn:oasis:names:tc:opendocument:xmlns:table:1.0}number-columns-repeated");         if (attr != null)         {             var numToSkip = 0;             if (int.TryParse(attr.Value, out numToSkip))             {                 j += numToSkip - 1;             }         }           if (i > 30) break;         if (j == 0)         {             dto.SomeProperty = cells[i].Value;         }         if (j == 1)         {             dto.SomeOtherProperty = cells[i].Value;         }         // some more data reading     }       // save data } You can define your own class for import results and add there all problems found during data import. Your application gets the results and shows them to user. Conclusion Reading ODS files may seem to complex task but actually it is very easy if we need only data from those documents. We can use some zip-library to get the content file and then parse it to XML. It is not hard to go through the XML but there are some optimization tricks we have to know. The code here is safe to use in web applications as it is not using any API-s that may have special needs to server and infrastructure.

    Read the article

  • Engineered to Inform, Inspire, Entertain

    - by Oracle OpenWorld Blog Team
    by Karen Shamban Take note! Oracle OpenWorld keynote lineup announced  The lineup for the keynotes at this year's Oracle OpenWorld conference has just been announced.  Expert speakers will provide insights into industry trends, the latest technology developments and futures, as well as key strategies for achieving business efficiency and innovation. Critical business drivers such as engineered systems, cloud computing, customer experience, and business analytics and big data will be featured topics. Executive keynotes include: Oracle CEO Larry Ellison on "Hardware and Software, Engineered to Work Together: Why It's a Different Approach" and "The Oracle Cloud: Where Social is Built In" Oracle President Mark Hurd discussing "Shift Complexity" with SVP of Oracle Database Development Andrew Mendelsohn,  and "See More, Act Faster: Oracle Business Analytics" Oracle EVP of Product Development Thomas Kurian focusing on "The Oracle Cloud: Oracle's Cloud Platform and Applications Strategy" Oracle EVP of Systems John Fowler, Oracle Chief Corporate Architect Edward Screven, and Oracle SVP of Systems Technology Juan Loiaza on "Oracle Cloud Infrastructure and Engineered Systems: Fast, Reliable, Virtualized" For more information on speakers, topics, and schedule, go to the Oracle OpenWorld Keynotes page.

    Read the article

  • Fujitsu Raku-Raku SmartPhone: Japanese Digital Seniors UX Insight from @debralilley

    - by ultan o'broin
    Super blog posting on the super-important subject of digital inclusion by Oracle partner Fujitsu appstech maven and Oracle Applications User Experience FXA-er and ACE Director Debra Lilley (@debralilley). Debra tells us how Fujitsu is enabling digital inclusion for older mobile users in Japan with their  Raku-Raku (??????. ????)smart phone: Fujitsu Raku-Raku - My UX Homework (Raku-Raku means easy or comfortable in Japanese). There are UX mobile, social media, and methodology takeaways there for us in Debra's blog. Fujitsu Raku-Raku Smartphone Demo  I encourage you to read Debra's blog. In it, she makes reference to a tailored social media experience for those digital seniors (???????) as they'd be called in Japan (UK and Ireland uses the term silver surfers). You can find that online experience here. Online Community site for Fujitsu Raku-Raku Smartphone Digital Seniors (English translation via Google Translate) It's an important reminder that UX is global sure, but also that worldwide accessibility and digital inclusion are priorities too for UX. It's vital that we understand such aspects of technology adoption and how the requirements of different categories of technology users can be met. Oracle is committed to providing the best possible user experience for enterprise users of all ages and abilities. That means talking with all sorts of people worldwide and understanding how and why they want to use our technology and what their context of use is. You can read more about Oracle's accessibility program on our corporate website. Proud to say I prompted a few questions in Japan all the way from Ireland. So, UX is not only global but you can drive UX research globally too without ever leaving home. Brilliant job, Debra. Here's to more such joint research creativity and UX collaborations worldwide between us. Wondering where we might go next? And what a fun way to do things too!

    Read the article

  • How to explain why design choices are good?

    - by Telastyn
    As I've become a better developer, I find that much of my design skill comes more from intuition than mechanical analysis. This is great. It lets me read code and get a feel for it quicker. It lets me translate designs between languages and abstractions much easier. And it let's me get stuff done faster. The downside is that I find it harder to explain to teammates (and worse, management) why a particular design is advantageous; especially teammates that are behind the times on best practices. "This design is more testable!" or "You should favor composition over inheritance." go right over their heads, and lead into the rabbit hole of me trying to clue everyone in to the last decade of software engineering advances. I'll get better at it with practice of course, but in the mean time it involves a lot of wasted time and/or bad design (that will lead to wasted time fixing it later). How can I better explain why a certain design is superior, when the benefits aren't completely obvious to the audience?

    Read the article

  • Rails: Law of Demeter Confusion

    - by user2158382
    I am reading a book called Rails AntiPatterns and they talk about using delegation to to avoid breaking the Law of Demeter. Here is their prime example: They believe that calling something like this in the controller is bad (and I agree) @street = @invoice.customer.address.street Their proposed solution is to do the following: class Customer has_one :address belongs_to :invoice def street address.street end end class Invoice has_one :customer def customer_street customer.street end end @street = @invoice.customer_street They are stating that since you only use one dot, you are not breaking the Law of Demeter here. I think this is incorrect, because you are still going through customer to go through address to get the invoice's street. I primarily got this idea from a blog post I read: http://www.dan-manges.com/blog/37 In the blog post the prime example is class Wallet attr_accessor :cash end class Customer has_one :wallet # attribute delegation def cash @wallet.cash end end class Paperboy def collect_money(customer, due_amount) if customer.cash < due_ammount raise InsufficientFundsError else customer.cash -= due_amount @collected_amount += due_amount end end end The blog post states that although there is only one dot customer.cash instead of customer.wallet.cash, this code still violates the Law of Demeter. Now in the Paperboy collect_money method, we don't have two dots, we just have one in "customer.cash". Has this delegation solved our problem? Not at all. If we look at the behavior, a paperboy is still reaching directly into a customer's wallet to get cash out. EDIT I completely understand and agree that this is still a violation and I need to create a method in Wallet called withdraw that handles the payment for me and that I should call that method inside the Customer class. What I don't get is that according to this process, my first example still violates the Law of Demeter because Invoice is still reaching directly into Customer to get the street. Can somebody help me clear the confusion. I have been searching for the past 2 days trying to let this topic sink in, but it is still confusing.

    Read the article

  • Best industry to work for as a developer.

    - by The Elite Gentleman
    Hi guys, Hmmm, StackOverflow now warns me of: "The question you're asking appears subjective and is likely to be closed." I've been an avid java (J2SE, JEE) developer for over 5 years now (and I'm not complaining, even though I want to go back to Delphi & C++). My contract has just ended and I'm wondering of possible job to further tackle. I've done banking and insurance industry for all my career (with 1 year on a Fortuner 500 company) and pretty much, banking is the slowest (and boring) industry to work for (IMHO) since they're strict in their business practices (fair enough). The upside is that they pay. My question is: What is the best industry for a developer, who tends to get bored relatively quickly, to work for? Is it also worthwhile for me to do consultancy (and if so, what type of consultancy)? PS There's no gaming industry in South Africa, so suggesting it requires that I have to travel to a country where gaming is alive! I don't see the Community Wiki checkbox, so I don't know how to make this a wiki.

    Read the article

  • SFTP permission denied on files owned by www-data

    - by Charles Roper
    I have a pretty standard server set up running Apache and PHP. An app I am running creates files and these are owned by the Apache user www-data. Files that I upload via SFTP are owned by my own user charlesr. All files are part of the www-data group. My problem is that I cannot modify or overwrite any of the files via SFTP which are owned by www-data, even though charlesr is part of the www-data group. I can modify the files no problem via a SSH session. So I'm not sure what to do. How do I give my SFTP session permissions to modify www-data owned files? For a bit of background, these are the notes I wrote for myself when setting-up the server: Now set up permissions on `/var/www` where your files are served from by default: $ sudo adduser $USER www-data $ sudo chgrp -R www-data /var/www $ sudo chmod -R g+rw /var/www $ sudo chmod -R g+s /var/www Now log out and log in again to make the changes take hold. The previous set of commands does the following: 1. adds the current user ($USER) to the `www-data` group; 2. changes `/var/www` to belong to the `www-data` group; 3. adds read/write permissions to the group that `/var/www` belongs to; 4. sets the SGID bit on `/var/www`; this final point bears some explaining. And then I go on to explain to myself what setting the SGID bit means (i.e. all files created in /var/www become part of the www-data group automatically). Btw, nothing feels sweeter than going back and reading your own detailed notes on the what, how and why of your own server set up when trying to troubleshoot like this - I recommend it highly to all beginners like myself :-)

    Read the article

  • How to make pulseaudio and ubuntu detect the same audio device as alsa driver

    - by Kiwy
    I use Ubuntu 14.04 x64 and I use gnome-shell on my laptop. I have a Bose companion 5 (which is basically a USB sound system) and a HDMI port, both does work perfectly when I just boot with the cable plugin. However, when my laptop go to sleep or get unplugged from those two outputs, if I plug back the device, I end up without any hardware detection (only the built-in speakers) from pulse and gnome-shell sound output selector while if I use alsamixer, the device look up and ready. gstreamer-properties allow me to select and test effectively any device but while alsa recognize any device on the run, pulse is not capable of handling things correctly, my question is then: How can I make pulse detect and use the same hardware as alsa, or how to remove completely and gracefully pulseaudio (meaning volume applet running in gnome shell) I don't mind if the project implies to recompile half gnome shell if it implies those audio outputs work all the time. Pulse does not list my soundcard when I use command pactl list cards while the module plug&play for sound card is loaded in pactl list modules. I really don't know what to do, the behavior seems pretty random.

    Read the article

  • Is it OK to reoccupy my old GitHub username to protect repository redirections?

    - by Idan Arye
    I'm considering changing my GitHub username from the old alias I was using as a kid to my real name. I'm concerned about my repository URLs. GitHub will redirect the old URLs, but if someone creates a new account using my old username and creates a repository with the same name as one of my repositories, the URL redirection will break and the URL will lead to their repository, not mine. Now, this is understandable, and GitHub recommends to not count on the redirect in the long term, and update all the remotes, but I'm concerned about some Vim plugins I'm hosting on GitHub. It's a common practice to manage Vim plugins with Git(either as separate repositories or as submodules), and if one of the plugins' remotes break you'll get error messages when you try to batch-update all your plugins(it happened to me once...). It's not that hard to solve, and the chances that'll happen are slim, but I would still like to avoid causing trouble to the users of my plugins... To prevent this, I think to create a new account with my old username. That way I can avoid the risk of someone else taking my old username and breaking the redirects of my old repositories. While researching this approach I've found GitHub's Name Squatting Policy. According to that policy, GitHub can delete or rename inactive accounts. To my understanding, they do this to prevent Cybersquatting, but surely this isn't the case with my fake account - I'm not holding someone else's name in an attempt to sell it to them, I'm merely occupying a name I was using to protect my old URLs... So, is it acceptable to go with this plan an create a fake account with my old username?

    Read the article

  • computer shows up twice, connection unknown

    - by Thomas G. Seroogy
    added two computers to Ubuntu One. One machine is windows. The windows version seems to work fine, and I started syncing a folder by placing it into the Ubuntu One folder. All files and folders are visible when I go to my account online. On Ubuntu machine. I selected to sync the Download folder. Shortly thereafter, I realized that one folder exceeded my storage max. I tried to un-sync the folder, but Ubuntu One and the Stop Syncing This Folder were not visible in the menu. Per Ubuntu instructions, I removed my Ubuntu computer from the list of syncing computers. Per Ubuntu instructions, I re-added the Ubuntu computer. However, I find that two computers by the same name are added on both the desktop app and on the web. Plus, I the connection is "unknown." I have removed and re-added the computer several times with the same results. In all cases, I remove the computers using the Ubuntu One desktop app, then removing them from my account on the web, removing the Ubuntu One password, and restart the Ubuntu One app. Problem remains. Thanks in advance for any replies and help.

    Read the article

  • Starting to Program C++ and Java

    - by user0321
    So as the title states, I'm trying to start programming in C++ and Java. I took C++ and Java courses in high school and I'm trying to get back into it. Of course all I want to get working now is a simple "Hello World" program. Couple of things: I want to use an IDE. I've decided on Eclipse. I'm just confused about how I go about downloading/using it. For Java: I get stuck right on their download page. They show Eclipse Classic, Eclipse IDE for Java developers and Eclipse IDE for Java EE Developers. I only programmed in Notepad and compiled in command prompt. Question 1: Which version of Eclipse should I download? Question 2: Do I need to install the Java JDK or does it come built into Eclipse? For C++: I guess I download the separate Eclipse IDE for C/C++ developers? I'm not too sure. I remember using Microsoft Visual for C++. I remember it being weird though. Anyways Question 3: Which version of Eclipse should I download? Question 4: Does C++ have a Development Kit or does it come built into Eclipse?

    Read the article

  • Help in decide the partition to install ubuntu

    - by G.Ashwin kumar
    I have a PC running with windows 7 ultimate 64 bit version with 4 gig Ram. I have a 320 gig hard disk , in which I have allocated 120 gig for windows 7, 100 gig for NY files(named ashwin in windows) and rest 80-90 gig partitioned but empty NTFS partition.Now where do I install Ubuntu so that windows and data is safe. I got the option install with windows I selected it , it then shows select drive(SCSI1 (0,0,0) (sda) -320.1 GB ATA WDC WD3200AAJS-6) and allocate driver by dragging the divider below which shows 66.5gb and 59.3 GB respectively. Which one do I go with? I clicked advance partitioning it shows five devices: device , type, m.point ,size.(mb), used(mb)......... /dev/sda1, NTFS, 104 , 35 (windows 7 loader) /dev/sda2, NTFS, 104752, 23604 /dev/sda3, NTFS, 125829, 10161 /dev/sda5, NTFS, 89382, 3221 when I checked size in properties it showed name of drive according to windows, used.Gb, free, total. ashwin, 10.2, 115.7, 125.8 c drive, 23.6, 81.1, 104.8 new volume, 92.6mb, 89.3, 89.4 except mentioned everything in gigabytes.ignore the last dots. I want to install it in new volume or using that space how do I do it? Explain in detail I'm a beginner.

    Read the article

  • Byte Size Tips: How to Show Google / Gmail Contacts in the OS X Contacts App

    - by The Geek
    The Contacts app on OS X isn’t very interesting, but if you can use it to display your Gmail contacts, it’ll get a little bit better. Luckily it’s pretty easy to add your Google / Gmail contacts, but you’ll have to click the mouse a few times and maybe poke at the old keyboard once or twice to type in your email address and password. It’s worth noting that if you set up Gmail in the Mail app you shouldn’t have to do this. Since we prefer Gmail in a browser, that’s why we’re writing this. Or just because we’re procrastinating the book editing that we’re supposed to be doing. Don’t judge. Start by opening the Preferences for the Contacts app by heading up to the Menu bar. Go to Accounts and then click the + sign to add a new one. Choose CardDAV for the account type, use your Gmail username and password, and put google.com as the server address. If you are using two-factor authentication, you’ll need to create a specific password for this account.    

    Read the article

  • Java.net Reborn

    - by Bob Rhubart
    Java.net, the home of  Java community projects, has been re-launched with a new look and new tools for developers.  The move from CollabNet to the Kenai infrastructure offers more flexibility for developers who want to host or contribute to community projects.  Instead of the large, fixed infrastructure per project (for example, several mailing lists per project), Kenai's ala carte features allow users to take only what they need. "We will continue to have the great mix of blogs, forums, and editorial content as well as new tools on the project side, including Mercurial, Git, and JIRA for developers," Java.net Community Manager Sonya Barry explains.  The migration was huge effort. Over 1400 projects were migrated (and some 30 projects are left to go). A large part of the migration was a big cleanup of abandoned projects. With the high abandonment rate of open source projects, the was a lot to remove. The new java.net site is smaller, faster and now the percentage of good, current content is much higher. Check it out at http://home.java.net/   Technorati Tags: java,java.net,oracle,oracle technology network del.icio.us Tags: java,java.net,oracle,oracle technology network

    Read the article

  • Oracle Linux 6 update 3

    - by wcoekaer
    Oracle Linux 6.3 channels are now available online http://public-yum.oracle.com repositories. Both base channels and latest channels are available (for free for everyone) http://linux.oracle.com repositories. Behind our customer portal but effectively the same content. Source RPMs (.srpm) are being uploaded to http://oss.oracle.com/ol6/SRPMS-updates. OL6.3 contains UEK2 kernel-uek-2.6.39-200.24.1. The source rpm is in the above location but our public GIT repository will be synced up shortly as well at https://oss.oracle.com/git/?p=linux-uek-2.6.39.git;a=summary. Unlike some others, of course, complete source, complete changelog, complete checkin history, both mainline and our own available. No need to go assemble things from a website manually. Another cool thing coming up is a boot iso for OL6.3 that boots up uek (2.6.39-200.24.1) as install kernel and uses btrfs as the default filesystem for installation. So latest and greatest direct access to btrfs, a modern well-tested, current kernel, freely available. Enjoy. Since it takes a few days for our ISOs to be on http://edelivery.oracle.com/linux, I mirrored them on my own server :http://mirrors.wimmekes.net/pub/OracleLinux/

    Read the article

  • Proof Identify stolen computer getting computer identification info from Launchpad bugs and comparing

    - by Kangarooo
    I sold my old laptop to neighbours and it was stolen from them. Well i think i have found thief so i want to check his computer id and compare it to my old Launchpad bugs id. How in Launchpad i can find from my bugs: Motherboard HDD Somthing else that can help identify it Maybe how to recover or find some overwritten files (couse now there is windows) I found in Launchpad one my bugs has LSPCI autogenerated from bug 682846 https://launchpadlibrarian.net/70611231/Lspci.txt but i dont see any id that can be used to identify specificly my comp. This can be used to identify many same models. Or i missed something in there? And what commands should i use to get all identification on that comp in one go fast? Just lspci? How to get same lspci as it is in that Launchpad link? Now testing laspci on my computer i dont get so much info. Also im now doing a search in my external hdd where i have many backups and maybe i have there result from lspci. So what containing keywords would help doing search with for small lspci and full reports ive done? I might have done sudo lshw somefilename

    Read the article

  • Can't get lines around table borders/cells [migrated]

    - by Ira Baxter
    I have several web pages containing tables, for which I'd like to have line-borders around the tables and the cells. In fact, some of these pages existed for several years already, and rendered acceptly in IE6, IE7. We switched about 6 months ago to a completely different set of style sheets to change our site look and feel. We also switched to "modern" browsers such as IE8 (and because I couldn't stop Vista) to IE9. Now the borders don't render at all. I spent a day fighting with this about a month ago, and failed to fix it. It seemed that I could reduce the page down to just the barest table and IE8 would still not render the border. I think I decided IE8 was just buggy, but I'm not an HTML expert so it is more likely that I'm buggy. (I'm just getting back to this; I'll go see if I can find that reduced page). Here is one such page: http://www.semdesigns.com/products/DMS/DMSComparison.html The tables should be obvious; you can tell them by their absence of lines :-{ The URI validates using the W3C service as HTML 4.01 Transitional. Any suggestions?

    Read the article

  • Need help with exploring a USB drive

    - by Bob Getsla
    When I plug in a USB drive, I see it on the left hand edge of the Unity desktop (11.10, 64 bit) but when I try to explore it, VLC starts and tries to play whatever it can find in the USB drive. This behavior began when I updated from 11.04 to 11.10. I literally cannot look into the contents of any of the USB drives I have, because I cannot stop VLC, nor can I do anything when I click Open other than watch VLC start up. This is very frustrating because it makes my USB sticks essentially useless. HELP! I'm sure that there is something a wizard could do about this, but I am not a wizard, and I am at my wits ends. Trying to get to the System Settings menu works, and I can see the setup for "Removable" devices, and they are all set to "Ask" but that is clearly not what is happening. So it looks like I must reach for the command line, but where do I go to find the settings for what the desktop does when I plug in a USB drive and wish to explore the file structure in it and possible copy a file into the USB or from the USB drive. Right now, VLC media player is always getting in my way. :-(

    Read the article

  • Best practices for App Idea ownership and shares

    - by JOG
    I am developing apps on my sparetime. I am the sole developer, and two non-programmer friends of mine provide vision, content, algorithms and ideas. We always agree happily on all the features, todos and prioritizations. But naturally, coding it is the biggest part. When selling, we agree on splitting profit equally, that is 33% each. But version 1.0 naturally does not sell much. And I go on to try to make the app more viral. This includes tons of stuff where the others are of little help. Examples: Adding support for sharing, facebook connect, gameifying, letting users add content, home page, support, maintenance, server services to make it easier for to update content. The list is long. Suddenly I will be doing 100% of a lot of work but only "own" a third of the income. My friends may either "fade out" of the project after 1.0, or they continue to contribute, but with less value and I would rather exchange them for more programmers or graphic designers. The effort they made to version 1.0 is worth a lot to the app and I realize I would have never done it without them. But I am doing all the work in the end. It is hard to negotiate about splitting 90, 5, 5 instead of 33% each, because the idea is still theirs. How to solve this? What are the best practices to regard the ownership of the app? What kind of agreements could I make that make it beneficial and motivational for me to continue developing the app?

    Read the article

  • 'Xojo' is the only application that I can't install

    - by Gichan
    I can't install xojo. When I click install in the software center it's not progressing. In the terminal it's stuck in : gichan02@gichan02-Latitude-D520:~$ sudo apt-get install xojo [sudo] password for gichan02: Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: xojo-bin The following NEW packages will be installed: xojo xojo-bin 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 209 MB/209 MB of archives. After this operation, 596 MB of additional disk space will be used. Do you want to continue? [Y/n] Y 0% [Working] then after waiting for an hour for progress it says: Failed to fetch https://private-ppa.launchpad.net/commercial-ppa-uploaders/xojo/ubuntu/pool/main/x/xojo/xojo-bin_2013.41-0ubuntu1_i386.deb Could not resolve host: private-ppa.launchpad.net So I added apt repository for 'private-ppa': deb https://ging-giana:[email protected]/commercial-ppa-uploaders/xojo/ubuntu trusty main Then when I try 'apt-get update': GPG error: https://private-ppa.launchpad.net trusty Release: The following signatures were invalid: NODATA 2 Then I noticed something the Software Sources:Other software TAB: Added by software-center; credentials stored in /etc/apt/auth.conf https://private-ppa.launchpad.net/commercial-ppa-uploaders/xojo/ubuntu So i go to the '/etc/apt/auth.conf' ,but It cannot be opened and it is not a keyserver. So i uncheck: Added by software-center; credentials stored in /etc/apt/auth.conf https://private-ppa.launchpad.net/commercial-ppa-uploaders/xojo/ubuntu GPG error was gone. But then again I found myself at the beginning of the problem.STUCK at '0% [Working]'. 'Xojo' is the only application that I can't install.Any explanation why is it like that?

    Read the article

  • multiple godaddy domains to home router then reverse proxy to multiple internal servers [closed]

    - by Dan
    I need someone to steer me correctly... advising on all required components. I have multiple domains with godaddy, say site1.com , site2.com, site3.net I have multiple home LAMP servers... one on say, lampsrv1 = 192.168.0.2:8080 (windows) and lampsrv2 = 192.168.0.3:9080 (linux srv2) I would like to have server1.site1.com point to lampsrv1 and server2.site1.com point to lampsrv2 . I may also want server1.site2.com also point to my lampsrv1 as an option. My thinking is - I have a dedicated linux srv1 with a reverse proxy server behind the router, ie Apache or NGINX or equivalent directing to appropriate LAMP server. It's the godaddy subdomains, cnames or redirections, etc I'm having a challenge with for starters... I have tested apache with virtual servers but can't get proxying to work based on host header info... seems to go to one address making me think its actually the apache reverse proxying that's not quite working. Finally to add to this, my router has a dynamic IP but does lease for quite a while but that would be my final piece. So, I'm sure this might be a popular question but can't seem to piece this together. I need someone who has actually configured this scenario to advise but will take other suggestions.... please indicate if you have successfully configured this.

    Read the article

  • Oracle Financials In the News

    - by Di Seghposs
    Coming off of OpenWorld and all the excitement around Oracle’s “Cloud” strategy, we thought we’d share what others had to say recently about Oracle’s financial solutions in and out of the cloud: Information Management, the educated reader’s choice for the latest news, commentary and feature content serving the information technology and business community, had an interesting blog post from Bill McNee of Saugatuck Technology, entitled, “A Bull Market for Finance Cloud Apps”. In the post, he highlights Oracle as one of the ‘significant players’ in the space… Oracle: As recently announced, Oracle is now aggressively marketing its Oracle Fusion Financials Cloud Service to midsize and large enterprise customers. While we anticipate that this solution set will primarily appeal to a portion of the existing Oracle customer footprint, rather than taking share from competitors, it is embedding some strong mobile and social capabilities that should help it gain traction. Read the full article - “A Bull Market for Finance Cloud Apps” Ventana Research, a leading benchmark research and advisory services firm, made mention to Oracle Fusion Financials in a recent blog post. While we all know ‘boring is cool’, it was cool to see Robert Kugel, SVP Research, discussing Oracle’s Fusion Financials strategy. Here’s some excerpts: “For at least the next five years I believe Oracle has a good strategy, because the transition from the existing Oracle ERP offerings to Fusion Financials can be less painful than similar migrations…” “Deploying Fusion GL can facilitate a more consistent and faster way to execute finance department functions.” “Fusion Financials is the go-forward accounting and financial applications suite that will coexist…” “Whether or not it’s time to migrate, I think all users of Oracle’s E-Business Suite, Oracle Applications, PeopleSoft and JD Edwards software should consider Fusion GL as part of an ongoing program to extract more value from their core financial systems.” Read the full article - “Oracle Fusion Financials: Boring is Cool”

    Read the article

  • How to provide value?

    - by Francisco Garcia
    Before I became a consultant all I cared about was becoming a highly skilled programmer. Now I believe that what my clients need is not a great hacker, coder, architect... or whatever. I am more and more convinced every day that there is something of greater value. Everywhere I go I discover practices where I used to roll my eyes in despair. I saw the software industry with pink glasses and laughed or cried at them depending on my mood. I was so convinced everything could be done better. Now I believe that what my clients desperately need is finding a balance between good engineering practices and desperate project execution. Although a great design can make a project cheap to maintain thought many years, usually it is more important to produce quick fast and cheap, just to see if the project can succeed. Before that, it does not really matters that much if the design is cheap to maintain, after that, it might be too late to improve things. They need people who get involved, who do some clandestine improvements into the project without their manager approval/consent/knowledge... because they are never given time for some tasks we all know are important. Not all good things can be done, some of them must come out of freewill, and some of them must be discussed in order to educate colleagues, managers, clients and ourselves. Now my big question is. What exactly are the skills and practices aside from great coding that can provide real value to the economical success of software projects? (and not the software architecture alone)

    Read the article

  • Working with Timelines with LINQ to Twitter

    - by Joe Mayo
    When first working with the Twitter API, I thought that using SinceID would be an effective way to page through timelines. In practice it doesn’t work well for various reasons. To explain why, Twitter published an excellent document that is a must-read for anyone working with timelines: Twitter Documentation: Working with Timelines This post shows how to implement the recommended strategies in that document by using LINQ to Twitter. You should read the document in it’s entirety before moving on because my explanation will start at the bottom and work back up to the top in relation to the Twitter document. What follows is an explanation of SinceID, MaxID, and how they come together to help you efficiently work with Twitter timelines. The Role of SinceID Specifying SinceID says to Twitter, “Don’t return tweets earlier than this”. What you want to do is store this value after every timeline query set so that it can be reused on the next set of queries.  The next section will explain what I mean by query set, but a quick explanation is that it’s a loop that gets all new tweets. The SinceID is a backstop to avoid retrieving tweets that you already have. Here’s some initialization code that includes a variable named sinceID that will be used to populate the SinceID property in subsequent queries: // last tweet processed on previous query set ulong sinceID = 210024053698867204; ulong maxID; const int Count = 10; var statusList = new List<status>(); Here, I’ve hard-coded the sinceID variable, but this is where you would initialize sinceID from whatever storage you choose (i.e. a database). The first time you ever run this code, you won’t have a value from a previous query set. Initially setting it to 0 might sound like a good idea, but what if you’re querying a timeline with lots of tweets? Because of the number of tweets and rate limits, your query set might take a very long time to run. A caveat might be that Twitter won’t return an entire timeline back to Tweet #0, but rather only go back a certain period of time, the limits of which are documented for individual Twitter timeline API resources. So, to initialize SinceID at too low of a number can result in a lot of initial tweets, yet there is a limit to how far you can go back. What you’re trying to accomplish in your application should guide you in how to initially set SinceID. I have more to say about SinceID later in this post. The other variables initialized above include the declaration for MaxID, Count, and statusList. The statusList variable is a holder for all the timeline tweets collected during this query set. You can set Count to any value you want as the largest number of tweets to retrieve, as defined by individual Twitter timeline API resources. To effectively page results, you’ll use the maxID variable to set the MaxID property in queries, which I’ll discuss next. Initializing MaxID On your first query of a query set, MaxID will be whatever the most recent tweet is that you get back. Further, you don’t know what MaxID is until after the initial query. The technique used in this post is to do an initial query and then use the results to figure out what the next MaxID will be.  Here’s the code for the initial query: var userStatusResponse = (from tweet in twitterCtx.Status where tweet.Type == StatusType.User && tweet.ScreenName == "JoeMayo" && tweet.SinceID == sinceID && tweet.Count == Count select tweet) .ToList(); statusList.AddRange(userStatusResponse); // first tweet processed on current query maxID = userStatusResponse.Min( status => ulong.Parse(status.StatusID)) - 1; The query above sets both SinceID and Count properties. As explained earlier, Count is the largest number of tweets to return, but the number can be less. A couple reasons why the number of tweets that are returned could be less than Count include the fact that the user, specified by ScreenName, might not have tweeted Count times yet or might not have tweeted at least Count times within the maximum number of tweets that can be returned by the Twitter timeline API resource. Another reason could be because there aren’t Count tweets between now and the tweet ID specified by sinceID. Setting SinceID constrains the results to only those tweets that occurred after the specified Tweet ID, assigned via the sinceID variable in the query above. The statusList is an accumulator of all tweets receive during this query set. To simplify the code, I left out some logic to check whether there were no tweets returned. If  the query above doesn’t return any tweets, you’ll receive an exception when trying to perform operations on an empty list. Yeah, I cheated again. Besides querying initial tweets, what’s important about this code is the final line that sets maxID. It retrieves the lowest numbered status ID in the results. Since the lowest numbered status ID is for a tweet we already have, the code decrements the result by one to keep from asking for that tweet again. Remember, SinceID is not inclusive, but MaxID is. The maxID variable is now set to the highest possible tweet ID that can be returned in the next query. The next section explains how to use MaxID to help get the remaining tweets in the query set. Retrieving Remaining Tweets Earlier in this post, I defined a term that I called a query set. Essentially, this is a group of requests to Twitter that you perform to get all new tweets. A single query might not be enough to get all new tweets, so you’ll have to start at the top of the list that Twitter returns and keep making requests until you have all new tweets. The previous section showed the first query of the query set. The code below is a loop that completes the query set: do { // now add sinceID and maxID userStatusResponse = (from tweet in twitterCtx.Status where tweet.Type == StatusType.User && tweet.ScreenName == "JoeMayo" && tweet.Count == Count && tweet.SinceID == sinceID && tweet.MaxID == maxID select tweet) .ToList(); if (userStatusResponse.Count > 0) { // first tweet processed on current query maxID = userStatusResponse.Min( status => ulong.Parse(status.StatusID)) - 1; statusList.AddRange(userStatusResponse); } } while (userStatusResponse.Count != 0 && statusList.Count < 30); Here we have another query, but this time it includes the MaxID property. The SinceID property prevents reading tweets that we’ve already read and Count specifies the largest number of tweets to return. Earlier, I mentioned how it was important to check how many tweets were returned because failing to do so will result in an exception when subsequent code runs on an empty list. The code above protects against this problem by only working with the results if Twitter actually returns tweets. Reasons why there wouldn’t be results include: if the first query got all the new tweets there wouldn’t be more to get and there might not have been any new tweets between the SinceID and MaxID settings of the most recent query. The code for loading the returned tweets into statusList and getting the maxID are the same as previously explained. The important point here is that MaxID is being reset, not SinceID. As explained in the Twitter documentation, paging occurs from the newest tweets to oldest, so setting MaxID lets us move from the most recent tweets down to the oldest as specified by SinceID. The two loop conditions cause the loop to continue as long as tweets are being read or a max number of tweets have been read.  Logically, you want to stop reading when you’ve read all the tweets and that’s indicated by the fact that the most recent query did not return results. I put the check to stop after 30 tweets are reached to keep the demo from running too long – in the console the response scrolls past available buffer and I wanted you to be able to see the complete output. Yet, there’s another point to be made about constraining the number of items you return at one time. The Twitter API has rate limits and making too many queries per minute will result in an error from twitter that LINQ to Twitter raises as an exception. To use the API properly, you’ll have to ensure you don’t exceed this threshold. Looking at the statusList.Count as done above is rather primitive, but you can implement your own logic to properly manage your rate limit. Yeah, I cheated again. Summary Now you know how to use LINQ to Twitter to work with Twitter timelines. After reading this post, you have a better idea of the role of SinceID - the oldest tweet already received. You also know that MaxID is the largest tweet ID to retrieve in a query. Together, these settings allow you to page through results via one or more queries. You also understand what factors affect the number of tweets returned and considerations for potential error handling logic. The full example of the code for this post is included in the downloadable source code for LINQ to Twitter.   @JoeMayo

    Read the article

< Previous Page | 617 618 619 620 621 622 623 624 625 626 627 628  | Next Page >